/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Tarea1;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author manuel
 * 
 * Servlet encargado de ejecutar las acciones de la pagina web e interactuar con las clase ManejoBD para i
 * ingresar, modificar y eliminar productos de la BD.
 */
public class GestionServlet extends HttpServlet {

    /*
     * Metodo que recoge la informacion de la accion y ejecuta la transaccion segun se necesite
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            ManejoBD manejoBD = new ManejoBD();
            manejoBD.conectarBD();
            HttpSession session = request.getSession();

            if (request.getParameter(Constantes.PARAMETRO_BOTON_BUSQUEDA) != null) {
                Producto productoSeleccionado;
                String codigoProducto = request.getParameter(Constantes.PARAMETRO_CODIGO_PRODUCTO);
                productoSeleccionado = manejoBD.seleccionaProducto(codigoProducto);
                if (!productoSeleccionado.esValido()) {
                    response.setContentType("text/html");
                    response.sendRedirect("GestionarProductos.jsp?estadoGestion=0");
                } else {
                    session.setAttribute(Constantes.ATRIBUTO_PRODUCTO, productoSeleccionado);
                    response.setContentType("text/html");
                    response.sendRedirect("GestionarProductos.jsp?estadoGestion=1");
                }
            } else if (request.getParameter(Constantes.PARAMETRO_BOTON_AGREGAR) != null) {
                Producto productoNuevo = new Producto();
                String codigoProducto = request.getParameter(Constantes.PARAMETRO_CODIGO_PRODUCTO);
                String descripcionProducto = request.getParameter(Constantes.PARAMETRO_DESCRIPCION_PRODUCTO);
                long precioProducto = Long.parseLong(request.getParameter(Constantes.PARAMETRO_PRECIO_PRODUCTO));
                int cantidadProducto = Integer.parseInt(request.getParameter(Constantes.PARAMETRO_DISPONIBLE_PRODUCTO));
                productoNuevo.setDescripcion(descripcionProducto);
                productoNuevo.setCantidad(cantidadProducto);
                productoNuevo.setPrecio(precioProducto);
                productoNuevo.setCodigo(codigoProducto);
                String resultado =manejoBD.agregaProducto(productoNuevo);

                response.setContentType("text/html");
                response.sendRedirect("GestionarProductos.jsp?estadoGestion="+resultado);

            } else if (request.getParameter(Constantes.PARAMETRO_BOTON_MODIFICAR) != null) {
                Producto productoNuevo = new Producto();
                String codigoProducto = request.getParameter(Constantes.PARAMETRO_CODIGO_PRODUCTO);
                String descripcionProducto = request.getParameter(Constantes.PARAMETRO_DESCRIPCION_PRODUCTO);
                long precioProducto = Long.parseLong(request.getParameter(Constantes.PARAMETRO_PRECIO_PRODUCTO));
                int cantidadProducto = Integer.parseInt(request.getParameter(Constantes.PARAMETRO_DISPONIBLE_PRODUCTO));
                productoNuevo.setDescripcion(descripcionProducto);
                productoNuevo.setCantidad(cantidadProducto);
                productoNuevo.setPrecio(precioProducto);
                productoNuevo.setCodigo(codigoProducto);
                String resultado= manejoBD.modificaProducto(productoNuevo);

                response.setContentType("text/html");
                response.sendRedirect("GestionarProductos.jsp?estadoGestion="+resultado);

            } else if (request.getParameter(Constantes.PARAMETRO_BOTON_ELIMINAR) != null) {

                String codigoProducto = request.getParameter(Constantes.PARAMETRO_CODIGO_PRODUCTO);
                String resultado =manejoBD.borraProducto(codigoProducto);
                response.setContentType("text/html");
                response.sendRedirect("GestionarProductos.jsp?estadoGestion="+resultado);
            }
            request.getRequestDispatcher("GestionarProductos.jsp").forward(request, response);
        } catch (Throwable exc) {
            System.out.println(exc);
        }
    }
}
